#!/bin/bash
# date: Mon Aug  1 15:30:36 CST 2022
# author: xxr

# 让用户选择节点类型
read -p "请输入该节点的类型：1--master 2--slave " num
case $num in 
	1)
		systemctl set-default graphical.target
		;;
	2)
		systemctl set-default multi-user.target
		;;
	*)
		echo -e "\e[31m请重新输入值\[0m"
		# 当用户输入其他值后直接退出脚本，防止代码后续运行
		exit 0
esac


# 修改主机名
read -p "请输入修改的主机名 " hostname
hostnamectl  set-hostname  $hostname


# 修改ip地址,默认情况下，系统都有ens160网络链接，利用该网络链接进行ip地址的静态修改
# 显示当前网络的默认ip地址，和子网地址供用户参考
ipaddr=`ip addr | grep "ens160" | grep inet | awk '{print($2)}'`
# 获取网关地址
gateway=`route -n | awk '$NF~/ens160/{print($2)}' | grep  "^[^0]"`
if [ -n $ipaddr ];then
echo "当前ip地址为：$ipaddr，网关地址为：$gateway"
read -p "请根据当前网络环境提供的ip地址(格式为ip地址/掩码长度)，输入想要设定的ip地址："  newIpAddr
nmcli connection modify ens160 autoconnect yes ipv4.method manual ipv4.addresses $newIpAddr ipv4.gateway $gateway ipv4.dns 114.114.114.114
nmcli connection up ens160
echo -e "\e[32mip地址修改成功，现ip地址为`ip addr | grep "ens160" | grep inet | awk '{print($2)}'` \e[0m"
else
	# 如果网络环境有问题，则提示信息，并直接退出脚本。
	echo -e "\e[31m当前网络有问题，请检查网络环境后继续操作\e[0m"
	exit 1
fi

# 将主机名和ip地址映射
echo -en "127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4\n::1         localhost localhost.localdomain localhost6 localhost6.localdomain6\n`ip addr | grep "ens160" | grep inet | awk '{print($2)}' | awk -F '/' '{print($1)}'` `hostname`\n" > /etc/hosts
echo -e "\e[32mip地址和主机名映射已完成\e[0m"
# 获取stdent相关的用户
username=`cat /etc/passwd | awk -F ":" '/^student/{print($1)}'`
if [ -z username ];then
        echo "\e[33m没有student相关的用户\e[0m"
else
        for i in $username
        do
               userdel -r $i
        done
	echo -e  "\e[32mstudent用户已删除成功\e[0m"
fi

echo -e "\e[33m重新创建用户student中...\e[0m"
useradd student
echo "1" | passwd --stdin student
# 设置student的免密登录
# 为了防止重复修改文本内容，此处加了个判断，是否有编辑过student
stduentvar=`grep "^student" /etc/sudoers`
if [ -z $studentvar ];then
sed  -i "/^root/a student ALL=(ALL) NOPASSWD: ALL" /etc/sudoers
            echo -e "\e[32mstudent已创建成功,初始密码为1，且免密已配置完毕\e[0m"
else
	echo -e "\e[32mstudent已创建成功,初始密码为1，且免密已配置完毕\e[0m"
fi

